<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <!-- 导入 lodash -->
    <script src="https://cdn.bootcdn.net/ajax/libs/lodash.js/4.17.21/lodash.min.js"></script>
    <title>Document</title>
  </head>
  <body>
    <script type="module">
      // 从demo_02.js导入数据
      import data from './year-24.js'

      // 处理数据
      const result = data.map((item, index) => {
        // 每次从0截取到当前index
        const currentData = data.slice(0, index+1)

        // 初始化所有号码的计数为 0，并确保键是 "01" 到 "49" 的格式
        const allNumbersCount = _.chain(_.range(1, 50))
          .map((number) => [_.padStart(number.toString(), 2, '0'), 0])
          .fromPairs()
          .value()

        // 统计每个号码出现的次数
        const numberCount = _.countBy(currentData, 'number')

        // 将实际计数与初始化的计数合并，未出现的号码将保持计数为 0
        _.assign(allNumbersCount, numberCount)

        // 是否开始统计热号
        const isStart = _.chain(allNumbersCount)
          .filter((value, key) => value > 1)
          .size()
          .gt(24)
          .value()

        // 转换 allNumbersCount 为数组并降序排序
        const sortedNumbers = _(allNumbersCount)
          .map((count, number) => ({ number, count })) // 转换为对象数组
          .orderBy(['count'], ['desc']) // 根据 count 降序排序
          .value()

        // 热号
        let hotNumbers = []
        // 冷号
        let coldNumbers = []
        if (isStart) {
          hotNumbers = sortedNumbers.slice(0, 25).map((item) => item.number)
          coldNumbers = sortedNumbers.slice(25).map((item) => item.number)
        }
        return {
          ...item,
          hotNumbers,
          coldNumbers,
          allNumbersCount,
          sortedNumbers
        }
      })

      // 输出结果
      console.log('最终结果:', result)
    </script>
  </body>
</html>
